﻿/**************************************************************************
创建时间:	2020/5/13 9:10:55    
作	  者:	张存
邮 	  箱:	zhangcunliang@126.com

描	述：
记	录：
    2020.5.21   类型转换之后再进行枚举比较
***************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ZhCun.Utils.Helpers
{
    /// <summary>
    /// 枚举操作类
    /// </summary>
    public static class EnumHelper
    {
        /// <summary>
        /// 将字符串值转换为枚举
        /// </summary>
        /// <typeparam name="T">枚举类型</typeparam>
        /// <param name="enumStr">枚举字符串</param>
        /// <param name="t">输出的枚举值，失败返回第一个选项</param>
        /// <returns>成功返回true</returns>
        public static bool StringToEnum<T>(string enumStr, out T t)
        {
            if (!enumStr.IsEmpty())
            {
                string[] enumNames = Enum.GetNames(typeof(T));
                foreach (var item in enumNames)
                {
                    if (enumStr.StringEquals(item))
                    {
                        t = (T)Enum.Parse(typeof(T), item);
                        return true;
                    }
                }
            }
            t = default;
            return false;
        }
    }
}

namespace System
{
    /// <summary>
    /// 枚举的扩展实现
    /// </summary>
    public static class EnumEx
    {
        /// <summary>
        /// 类型转换之后再进行枚举比较
        /// </summary>
        public static bool EqualValue<T>(this Enum em, T val)
        {
            var emVal = Convert.ChangeType(em, val.GetType());
            return emVal.Equals(val);
        }
    }
}
